package edu.erpan.bl.bean;

import java.util.List;

import javax.ejb.Remote;

import edu.erpan.bl.dto.ConsumoMateriaPrima;
import edu.erpan.bl.entities.Cliente;
import edu.erpan.bl.entities.LineaPedido;
import edu.erpan.bl.entities.Pedido;
import edu.erpan.util.entityManager.IGenericEntityManager;
import edu.erpan.util.entityManager.exceptions.IdNotFoundException;
import edu.erpan.util.entityManager.exceptions.PersistException;
import edu.erpan.util.entityManager.exceptions.QueryException;

@Remote
public interface OrdenPedidoBeanRemote extends IGenericEntityManager<Pedido> {

	
	public Pedido consultarPedido(Pedido pedido)throws QueryException, IdNotFoundException;
	
	public List<Pedido> consultarPedidosAProduccion() throws QueryException;
	public List<Pedido> consultarPedidosPendientes() throws QueryException;
	public List<Pedido> consultarPedidosCancelados() throws QueryException;

	public Pedido guardarPedido(Pedido pedido,List<LineaPedido> lineasPedido) throws PersistException;

	public void editarOrdenPedido(Pedido pedido) throws PersistException;

	public void eliminarPedido(Pedido pedido) throws QueryException;
	
	public List<LineaPedido> consultarLineasPedido(Pedido pedido) throws QueryException;

	public List<ConsumoMateriaPrima> calcularConsumoDeMateriaPrima(Pedido pedido) throws QueryException;

	List<ConsumoMateriaPrima> calcularConsumoDeMateriaPrimaTodosLosPedidos(int estado)
			throws QueryException;

	List<Cliente> consultarClientes() throws QueryException;
	
	List<Cliente> consultarClientesActivos() throws QueryException;

	void cancelarOrdenPeddido(Pedido pedido) throws PersistException;

	void pasarOrdenPedidoAProduccion(Pedido pedido) throws PersistException;
	
	Cliente guardarCliente(Cliente cliente) throws PersistException;

	void editarCliente(Cliente cliente) throws PersistException;

	Cliente consultarClientesPorIdentificacion(Cliente cliente) throws QueryException;

	Cliente consultarCliente(Cliente cliente) throws QueryException;
}
